home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 10 / The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso / PC_SIGCD / 10 / 9 / DISK1095.ZIP / WHERELST.PRG < prev    next >
Text File  |  1980-01-01  |  5KB  |  161 lines

  1. *
  2. * WHERELST
  3. * PREPARE WHERE USED ANALYSIS FOR ONE COMPONENT OR SUBASSEMBLY
  4. SET HEADING OFF
  5. SET SAFETY OFF
  6. SET STATUS OFF
  7. CLEAR
  8. CLEAR ALL
  9. SET TALK OFF
  10. SET BELL OFF
  11. STORE SPACE(80) TO BLANK
  12. @ 1,22 SAY "SMITH'S BIKEWORKS INFORMATION SYSTEM"
  13. @ 3,18 SAY ">> Production System Where-Used Analysis <<"
  14. @ 5,29 SAY "Today's Date: "
  15. ?? DATE()
  16. STORE " " TO DUMMY
  17. DO WHILE DUMMY<>"M"
  18.    STORE "          " TO STOCK_NUM
  19.    STORE 1 TO MFG_NUM
  20.    @ 11,1 SAY "Produce Where-Used Analysis For Stock Number " GET STOCK_NUM
  21.    STORE " " TO DUMMY
  22.    @ 21,1 SAY ;
  23.    "REPLACE VALUE AT CURSOR. 'M' HERE RETURNS TO THE PRODUCTION SYSTEM MENU,"
  24.    @ 22,1 SAY ;
  25.    "ANY OTHER KEY STARTS THE REPORT => ";
  26.    GET DUMMY
  27.    READ
  28.    STORE UPPER(DUMMY) TO DUMMY
  29.    IF DUMMY="M"
  30.       RETURN
  31.    ENDIF
  32. * OPEN FILE
  33.    USE ASSEMBLY INDEX ASTOCKNO,SSTOCKNO
  34. * ESTABLISH STACK AND STACK POINTER FOR CURRENT ASSEMBLY STOCK NUMBER
  35.    STORE 1 TO STACK_PTR
  36.    STORE "KEY"+STR(STACK_PTR,1,0) TO TEMP
  37.    STORE STOCK_NUM TO &TEMP
  38.    STORE &TEMP TO KEY
  39.    SEEK KEY
  40. * IF NO RECORD FOUND FOR REQUESTED STOCK NUMBER, SETUP ERROR MESSAGE FLAG
  41.    IF (EOF() .OR. BOF())
  42.       STORE (1=1) TO NOT_FOUND
  43.       @ 16,12 SAY "RECORD NOT FOUND"
  44.       WAIT "            PRESS ANY KEY AND ENTER A NEW STOCK NUMBER"
  45.       @ 16,0 SAY BLANK
  46.       @ 17,0 SAY BLANK
  47.       LOOP
  48.    ELSE
  49.       STORE (1=2) TO NOT_FOUND
  50. * IF RECORD FOUND, STORE ITS LOCATION IN RECORD NUMBER STACK
  51.       STORE "RECORD"+STR(STACK_PTR,1,0) TO RECORD
  52.       STORE RECNO() TO &RECORD
  53.       STORE ASM_STKNO+"  "+ASM_DESC TO COMPONENT
  54.    ENDIF
  55. * GET FIRST ENTRY USING THE COMPONENT
  56.    SET INDEX TO SSTOCKNO,ASTOCKNO
  57.    SEEK KEY
  58.    IF (EOF() .OR. BOF())
  59.      STORE (1=1) TO NOT_FOUND
  60.      @ 16,12 SAY "THIS PART IS A MAJOR ASSEMBLY AND NOT A COMPONENT OF ANY"
  61.      @ 17,25 SAY "OTHER ASSEMBLIES"
  62.      WAIT "            PRESS ANY KEY AND ENTER A NEW STOCK NUMBER"
  63.      @ 16,0 SAY BLANK
  64.      @ 17,0 SAY BLANK
  65.      @ 18,0 SAY BLANK
  66.      LOOP
  67.    ENDIF
  68. * OUTPUT GOES TO PRINTER
  69.    SET PRINT ON
  70.    SET DEVICE TO PRINT
  71.    SET CONSOLE OFF
  72.    STORE 60 TO LINE_CNT
  73.    STORE 0 TO PAGE_NUM
  74.    STORE (1=1) TO PRINT_FLG
  75.    STORE 1 TO ASSEM_CNT
  76.    STORE 1 TO TOT_CNT
  77. * USE STACK TO MOVE THROUGH ASSEMBLY LEVELS
  78.    DO WHILE STACK_PTR>0
  79. * PAGE HEADING
  80.       IF LINE_CNT>=60
  81.          STORE PAGE_NUM+1 TO PAGE_NUM
  82.          @ 2,0 SAY "SMITH'S BIKEWORKS -- WHERE-USED ANALYSIS"
  83.          @ 2,50 SAY DATE()
  84.          @ 2,70 SAY "PAGE "
  85.          ?? STR(PAGE_NUM,2,0)
  86.          @ 4,0 SAY "Stock Num"
  87.          @ 4,30 SAY "Description"
  88.          @ 4,55 SAY "Assemblies"
  89.          @ 4,70 SAY "Qty. Req'd"
  90.          @ 6,0 SAY COMPONENT
  91.          STORE 7 TO LINE_CNT
  92.       ENDIF
  93. * PRINT RECORD IF PRINT FLAG IS SET
  94.       IF PRINT_FLG
  95.          IF STACK_PTR>1
  96.             STORE ASSEM_CNT TO QUANTITY
  97.          ELSE
  98.             STORE 1 TO QUANTITY
  99.          ENDIF
  100.          IF NOT_FOUND
  101.             @ LINE_CNT,40 SAY "Total Requirement For Assembly:"
  102.             @ LINE_CNT,72 SAY TOT_CNT PICTURE "99999.99"
  103.             STORE 1 TO TOT_CNT
  104.             STORE LINE_CNT+1 TO LINE_CNT
  105.          ELSE
  106.             @ LINE_CNT,0+5*(STACK_PTR)  SAY ASM_STKNO
  107.             @ LINE_CNT,12+5*(STACK_PTR) SAY ASM_DESC
  108.             STORE TOT_CNT*ASSEM_CNT TO TOT_CNT
  109. * PRINT ASSEMBLY COUNT
  110.             IF SUB_STKNO="          "
  111.                @ LINE_CNT,72 SAY QUANTITY PICTURE "99999.99"
  112.             ELSE
  113.                @ LINE_CNT,45+5*(STACK_PTR) SAY QUANTITY PICTURE "99999.99"
  114.             ENDIF
  115.          ENDIF
  116.          STORE LINE_CNT+1 TO LINE_CNT
  117.       ENDIF
  118. * IF THERE IS NO LOWER LEVEL, TRY NEXT ENTRY, THEN MOVE UP THE STACK
  119.       IF SUB_STKNO="          ".OR.NOT_FOUND
  120.          STORE "          " TO TEMP
  121.          STORE (1=2) TO NOT_FOUND
  122.          STORE 0 TO RECNOW
  123.          DO WHILE SUB_STKNO<>TEMP.AND.STACK_PTR>0.OR.RECNOW=RECNO()
  124.             STORE STACK_PTR-1 TO STACK_PTR
  125.             IF STACK_PTR>0
  126.                STORE "RECORD"+STR(STACK_PTR,1,0) TO RECORD
  127.                GO &RECORD
  128.                STORE &RECORD TO RECNOW
  129. * STORE CURRENT ASSEMBLY NUMBER TO SEE IF NEXT RECORD MATCHES
  130.                STORE SUB_STKNO TO TEMP
  131.                SKIP +1
  132.             ENDIF
  133.          ENDDO
  134. * TURN PRINT FLAG ON
  135.          STORE (1=1) TO PRINT_FLG
  136.          STORE RECNO() TO &RECORD
  137. * SUBASSEMBLY IDENTIFIED SO GO DOWN A LEVEL
  138.       ELSE
  139. * SET FLAG TO PRINT NEXT RECORD
  140.          STORE (1=1) TO PRINT_FLG
  141. * STORE NUMBER OF ASSEMBLIES REQUIRED
  142.          STORE SUB_NOREQ TO ASSEM_CNT
  143.          STORE "RECORD"+STR(STACK_PTR,1,0) TO RECORD
  144.          STORE RECNO() TO &RECORD
  145.          STORE (1=2) TO NOT_FOUND
  146.          STORE ASM_STKNO TO MEMKEY
  147.          SEEK MEMKEY
  148.          STORE STACK_PTR+1 TO STACK_PTR
  149.          IF (EOF() .OR. BOF())
  150.             GO &RECORD
  151.             STORE (1=1) TO NOT_FOUND
  152.          ENDIF
  153.       ENDIF
  154.    ENDDO
  155.    EJECT
  156.    SET PRINT OFF
  157.    SET CONSOLE ON
  158.    SET DEVICE TO SCREEN
  159. ENDDO
  160. RETURN
  161.